package br.com.conciliador.cadastro.vo;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

import br.com.conciliador.cadastro.vo.filtro.FiltroEstEmpresaVo;
import br.com.conciliador.seguranca.vo.UsuarioVo;
import br.com.r2.util.tipodado.Flag;
import br.com.r2.util.tipodado.InteiroLongo;
import br.com.r2.util.tipodado.Texto;

@Entity
@Table(name = "EST_EMPRESA")
@Proxy(lazy = false)
public class EstEmpresaVo implements Serializable
{

   /**
    * 
    */
   private static final long serialVersionUID = -6337662436999325603L;

   @Id
   @Column(name = "ID")
   @GeneratedValue(generator = "InteiroSequenceGenerator")
   @GenericGenerator(name = "InteiroSequenceGenerator", strategy = "br.com.r2.util.tipodado.hibernate.generator.InteiroSequenceGenerator")
   @Type(type = "br.com.r2.util.tipodado.hibernate.InteiroLongoUT")
   private InteiroLongo codigo;

   @Column(name = "DESCRICAO")
   @Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
   private Texto descricao;

   @Column(name = "CNPJ")
   @Type(type = "br.com.r2.util.tipodado.hibernate.TextoUT")
   private Texto cnpj;

   @Column(name = "FLAG_INTEGRACAO")
   @Type(type = "br.com.r2.util.tipodado.hibernate.FlagUT")
   private Flag flagIntegracao;

   @OneToMany(mappedBy = "estEmpresaVo", fetch = FetchType.LAZY)
   @Cascade(CascadeType.ALL)
   private Set<UsuarioVo> listaUsuarios;

   @Transient
   private FiltroEstEmpresaVo filtroVo;

   public InteiroLongo getCodigo()
   {
      return codigo;
   }

   public void setCodigo(InteiroLongo codigo)
   {
      this.codigo = codigo;
   }

   public Texto getDescricao()
   {
      return descricao;
   }

   public void setDescricao(Texto descricao)
   {
      this.descricao = descricao;
   }

   public Texto getCnpj()
   {
      return cnpj;
   }

   public void setCnpj(Texto cnpj)
   {
      this.cnpj = cnpj;
   }

   public Set<UsuarioVo> getListaUsuarios()
   {
      return listaUsuarios;
   }

   public void setListaUsuarios(Set<UsuarioVo> listaUsuarios)
   {
      this.listaUsuarios = listaUsuarios;
   }

   public FiltroEstEmpresaVo getFiltroVo()
   {
      return filtroVo;
   }

   public void setFiltroVo(FiltroEstEmpresaVo filtroVo)
   {
      this.filtroVo = filtroVo;
   }

   public Flag getFlagIntegracao()
   {
      return flagIntegracao;
   }

   public void setFlagIntegracao(Flag flagIntegracao)
   {
      this.flagIntegracao = flagIntegracao;
    }

}
